package com.briup.corejava.day19;

import java.io.*;
import java.util.Enumeration;
import java.util.Properties;
import java.util.Set;

/**
 * Properties类 读取/写入 properties文件
 */
public class Test6 {
    public static void main(String[] args) throws Exception {
        // 1、准备文件对象
        File file = new File("src/com/briup/corejava/day19/file/db.properties");
        // 2、准备字节输入流
        FileInputStream fis = new FileInputStream(file);
        // 3、创建Properties的对象
        Properties properties = new Properties();
        // 4、加载文件
        properties.load(fis);
        // 5、读取/写入
        // 根据key去读value
        String driverClassName = properties.getProperty("driverClassName");
        String url = properties.getProperty("url");
        String username = properties.getProperty("username");
        String password = properties.getProperty("password");
        // 输出
        System.out.println("driver："+driverClassName);
        System.out.println("url："+url);
        System.out.println("username："+username);
        System.out.println("password："+password);
        // 其他方法，获得所有key的名字
        // key和value都是字符串
        Enumeration<?> enumeration = properties.propertyNames();
        // 使用方法进行输出
        while (enumeration.hasMoreElements()){
            System.out.println(enumeration.nextElement());
        }

        // 修改
        properties.setProperty("username","zs");
        properties.setProperty("password","666");
        properties.setProperty("aliveCount","10");

        Set<String> keySet = properties.stringPropertyNames();
        System.out.println(keySet);

        // 修改只是对map进行元素修改，真正改到文件里还需要用输出流写出
        OutputStream os = new FileOutputStream(file);
        properties.store(os,"新增了aliveCount数据，修改了账号和密码");
        System.out.println("properties文件修改成功");

        // 6、关闭资源
        fis.close();
    }
}
